
package com.hlkj.pay.service.order;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import com.hlkj.framework.common.pojo.PageResult;
import com.hlkj.pay.dto.order.OrderStatisticsDto;
import com.hlkj.pay.dto.order.OrderStatisticsGroupDto;
import com.hlkj.pay.dto.order.OrderStatisticsQueryDto;
import com.hlkj.pay.infrastructure.model.order.OrderStatisticsDO;

import java.util.List;
import java.util.Set;

/**
 * @author HlpayTeam
 * @date 2024/11/08 11:47
 */
public interface IOrderStatisticsService {

    /**
     *
     * @param orderStatisticsQueryDto
     * @return
     */
    PageResult<OrderStatisticsDO> queryPage(OrderStatisticsQueryDto orderStatisticsQueryDto);

    /**
     * 
     * @param orderStatisticsQueryDto
     * @return
     */
    List<OrderStatisticsDO> queryStatistics(OrderStatisticsQueryDto orderStatisticsQueryDto);

    /**
     * 
     * @param ids
     * @param remark
     */
    void deleteByIds(List<Long> ids, String remark);

    /**
     * 
     * @param addStatisticsList
     */
    void addStatisticsList(List<OrderStatisticsDO> addStatisticsList);

    /**
     *
     * @param type
     * @param relationId
     * @param time
     * @return
     */
    OrderStatisticsDO queryOne(String sn,Integer type, String relationId, Long time);

    /**
     *
     * @param orderStatisticsDO
     */
    void updateStatistics(OrderStatisticsDO orderStatisticsDO);

    /**
     *
     * @param orderStatisticsDO
     */
    OrderStatisticsDO addStatistics(OrderStatisticsDO orderStatisticsDO);
    /**
     * 订单统计查询
     * @param orderStatisticsQueryDto
     * @return
     */
    OrderStatisticsDO queryOrderStatistics(OrderStatisticsQueryDto orderStatisticsQueryDto);
    /**
     *
     * @param type
     * @param relationId
     * @param timeKeys
     * @return
     */
    List<OrderStatisticsDO> queryList(String sn,Integer type, String relationId, Set<Long> timeKeys);
    /**
     *
     * @param orderStatisticsQueryDto
     * @return
     */
    PageResult<OrderStatisticsGroupDto> queryTranPage(OrderStatisticsQueryDto orderStatisticsQueryDto);
    List<OrderStatisticsGroupDto> queryTranList(OrderStatisticsQueryDto orderStatisticsQueryDto);
    /**
     *
     * @param orderStatisticsQueryDto
     * @return
     */
    List<OrderStatisticsDO> queryCommonList(OrderStatisticsQueryDto orderStatisticsQueryDto);
    /**
     *
     * @param orderStatisticsQueryDto
     * @return
     */
    PageResult<OrderStatisticsDO> queryCommonPage(OrderStatisticsQueryDto orderStatisticsQueryDto);
    /**
     *
     * @param orderStatisticsQueryDto
     * @return
     */
    PageResult<OrderStatisticsDto> queryMchChannelCodePage(OrderStatisticsQueryDto orderStatisticsQueryDto);
    List<OrderStatisticsDto> queryMchChannelCodeList(OrderStatisticsQueryDto orderStatisticsQueryDto);
    /**
     *
     * @param orderStatisticsQueryDto
     * @return
     */
    PageResult<OrderStatisticsDO> queryAgentPage(OrderStatisticsQueryDto orderStatisticsQueryDto);
    List<OrderStatisticsDO> queryAgentList(OrderStatisticsQueryDto orderStatisticsQueryDto);

    PageResult<OrderStatisticsDto> queryChannelCodePage(OrderStatisticsQueryDto orderStatisticsQueryDto);
    List<OrderStatisticsDto> queryChannelCodeList(OrderStatisticsQueryDto orderStatisticsQueryDto);

    PageResult<OrderStatisticsDto> queryAutCodePage(OrderStatisticsQueryDto orderStatisticsQueryDto);
    List<OrderStatisticsDto> queryAutCodeList(OrderStatisticsQueryDto orderStatisticsQueryDto);

    /**
     *
     * @param startQueryTime
     * @param sn
     */
    void deleteByTime(long startQueryTime, String sn,String remark);
}
